///////////////////////////////////////////////////////////////////
// Bind grflib Rendering Engine to DXUT Callbacks
///////////////////////////////////////////////////////////////////

#pragma once

namespace grflib
{
	namespace engine
	{
		namespace D3D10
		{
			//DXUT callbacks bindings
			HRESULT CALLBACK OnD3D10CreateDevice( ID3D10Device* pd3dDevice, const DXGI_SURFACE_DESC* pBufferSurfaceDesc, void* pUserContext );
			HRESULT CALLBACK OnD3D10ResizedSwapChain( ID3D10Device* pd3dDevice, IDXGISwapChain* pSwapChain, const DXGI_SURFACE_DESC* pBufferSurfaceDesc, void* pUserContext );
			void CALLBACK OnD3D10ReleasingSwapChain( void* pUserContext );
			void CALLBACK OnD3D10DestroyDevice( void* pUserContext );
			void CALLBACK OnD3D10FrameRender( ID3D10Device* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext );
			LRESULT CALLBACK OnD3D10Msg( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool* pbNoFurtherProcessing, void* pUserContext );
			void CALLBACK OnFrameMove( double fTime, float fElapsedTime, void* pUserContext );
			bool CALLBACK ModifyDeviceSettings( DXUTDeviceSettings* pDeviceSettings, void* pUserContext );
			bool CALLBACK IsD3D10DeviceAcceptable( UINT Adapter, UINT Output, D3D10_DRIVER_TYPE DeviceType, DXGI_FORMAT BufferFormat, bool bWindowed, void* pUserContext );
		} //namespace D3D10
	} //namespace engine
} //namespace grflib